Type Assertion
❓질문
타입 단언이란 무엇이며 언제 사용하나요?
💡 조사하기전 내가 알고 있던 내용
타입 단언이란 as TYPE
의 키워드를 통해 타입을 단언 할수 있습니다.
타입을 단언 하게 되면 타입스크립트의 컴파일러는 단언한 타입을 기반으로 아 이건 이 타입이구나 하고 100퍼센트 확신 하게됩니다 즉 다른 타입을 넣게되면 이를 컴파일러에서는 잡을 수 없게되고 런타임에서 이 오류를 찾게 될겁니다.
타입스크립트를 처음 배웠을때 any 타입
과 타입 단언
은 사용하지말라는 말이 있습니다.
이는 타입을 고정시켜 컴파일러단계에서 에러를 캐치하지못한다면 타입스크립트를 사용할 이유가 없기 때문입니다.
그러나 이런 타입단언도 API
나 외부 라이브러리
, HTML 파싱
등에서 해당하는 반환타입을 정확히 알고 있을때 사용한다면 타입스크립트가 추론이 불가능한 타입을 명시함으로써 타입에러를 해결할 수 있습니다.
하나 더 해서 그럼 이 기능이 매우 위험하다는건 알고있습니다. 이를 보안하기위해 대부분의 경우에서는
Type Narrowing
을 사용합니다.
타입 네로잉이란 if문등 조건문을 추가해 이 타입이 이거일때 이렇게 진행해주세요 이 타입이 아닌경우에는 이렇게 대응해주세요등 타입을 좁혀 해당 타입일때만 로직을 동작시키는 방식입니다. 이는 타입스크립트 체크도 되고 런타임의 안정성도 보장하니 보편적인 상황에서는 더 좋은 방법이라 생각합니다.
🏫 정리한 내용
타입 단언은 컴파일러의 타입 검사를 우회하기 때문에, 실제 값이 단언한 타입과 다를 경우 런타임 에러가 발생할 수 있습니다. 따라서 타입 단언은 해당 타입을 확실히 알고 있을 때만 사용하는 것이 중요하며, 가능한 한 타입 추론과 타입 가드를 우선적으로 사용하는 것이 바람직합니다. 잘못된 사용은 타입스크립트의 장점을 훼손하며, 오히려 코드의 안정성을 해칠 수 있습니다.